]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
windowManager: Implement the resize popup here
authorJasper St. Pierre <jstpierre@mecheye.net>
Tue, 30 Dec 2014 01:30:38 +0000 (17:30 -0800)
committerJasper St. Pierre <jstpierre@mecheye.net>
Tue, 30 Dec 2014 01:46:37 +0000 (17:46 -0800)
mutter recently removed its implementation, so add a simple one here.

data/theme/gnome-shell.css
js/ui/windowManager.js

index cb820c998393add8c0360ae8d0f85f222bf053bf..7beede392c30e19ef555278eee7e76b7d9dc9020 100644 (file)
@@ -2107,6 +2107,15 @@ StScrollBar StButton#vhandle:active {
     font-size: 14pt;
 }
 
+/* Resize popup */
+.resize-popup {
+    border-radius: 10px;
+    background-color: rgba(0.0, 0.0, 0.0, 0.9);
+    border: 2px solid #868686;
+    padding: 16px;
+    font-size: 14pt;
+}
+
 /* ShellMountOperation Dialogs */
 .shell-mount-operation-icon {
     icon-size: 48px;
index b8af0e0b6493c0af00a709169a3cb7cc4d1bd8f8..56f33a5b098f09e1fb5b60fabdfea6abba770321 100644 (file)
@@ -580,6 +580,35 @@ const AppSwitchAction = new Lang.Class({
 });
 Signals.addSignalMethods(AppSwitchAction.prototype);
 
+const ResizePopup = new Lang.Class({
+    Name: 'ResizePopup',
+
+    _init: function() {
+        this._widget = new St.Widget({ layout_manager: new Clutter.BinLayout() });
+        this._label = new St.Label({ style_class: 'resize-popup',
+                                     x_align: Clutter.ActorAlign.CENTER,
+                                     y_align: Clutter.ActorAlign.CENTER,
+                                     x_expand: true, y_expand: true });
+        this._widget.add_child(this._label);
+        Main.uiGroup.add_actor(this._widget);
+    },
+
+    set: function(rect, displayW, displayH) {
+        /* Translators: This represents the size of a window. The first number is
+         * the width of the window and the second is the height. */
+        let text = _("%d x %d").format(displayW, displayH);
+        this._label.set_text(text);
+
+        this._widget.set_position(rect.x, rect.y);
+        this._widget.set_size(rect.width, rect.height);
+    },
+
+    destroy: function() {
+        this._widget.destroy();
+        this._widget = null;
+    },
+});
+
 const WindowManager = new Lang.Class({
     Name: 'WindowManager',
 
@@ -792,6 +821,8 @@ const WindowManager = new Lang.Class({
                            Shell.ActionMode.TOPBAR_POPUP,
                            Lang.bind(this, this._toggleAppMenu));
 
+        global.display.connect('show-resize-popup', Lang.bind(this, this._showResizePopup));
+
         Main.overview.connect('showing', Lang.bind(this, function() {
             for (let i = 0; i < this._dimmedWindows.length; i++)
                 this._undimWindow(this._dimmedWindows[i]);
@@ -1522,4 +1553,16 @@ const WindowManager = new Lang.Class({
         let dialog = new DisplayChangeDialog(this._shellwm);
         dialog.open();
     },
+
+    _showResizePopup: function(display, show, rect, displayW, displayH) {
+        if (show) {
+            if (!this._resizePopup)
+                this._resizePopup = new ResizePopup();
+
+            this._resizePopup.set(rect, displayW, displayH);
+        } else {
+            if (this._resizePopup)
+                this._resizePopup.destroy();
+        }
+    },
 });